package com.daxt.controller.filemanager;

import java.util.List;

import com.daxt.mapper.sys.UreportFileMapper;
import com.daxt.model.service.base.vo.UreportFile;
import com.daxt.service.ArchivesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.daxt.common.result.Result;
import com.daxt.common.result.ResultCode;
import com.daxt.common.result.ResultUtil;
import com.daxt.mapper.archives.ArchivesDocMapper;
import com.daxt.mapper.archives.ArchivesTempletMapper;
import com.daxt.model.service.archives.vo.ArchivesTemplet;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

@Api(tags = "打印")
@RestController
@RequestMapping("/fileManager")
public class PrintController {

	@Autowired
	private ArchivesTempletMapper archivesTempletMapper;
	@Autowired
	private ArchivesDocMapper archivesDocMapper;
	@Autowired
	private ArchivesService archivesService;
//	@Autowired
//	private TemplateMapper templateMapper;

	@Autowired
	private UreportFileMapper ureportFileMapper;


//	@ApiOperation(value = "预览", notes = "")
//	@PostMapping("/printTemplet/{templetId}")
//	public Result<List<String>> printTemplet(@PathVariable("templetId") String templetId, @RequestBody List<String> id,
//			HttpServletRequest request, HttpServletResponse response) {
//		//String basePath1="d:" + File.separator;
//		String basePath = SystemConfig.tempPath+IdWorker.getIdStr() ;
//		ArchivesTemplet templet = archivesTempletMapper.selectById(templetId);
//
//		String fileUrl = "";
//		File downFileZip = null;
//		String newFile = IdWorker.getIdStr();
//		String path = basePath + newFile + ".xls";
//
//		try {
//			fileUrl = templet.getFileUrl();
//			//downFileZip = downFile(fileUrl, basePath);
//			downFileZip=new File(basePath+
//					fileUrl.substring(fileUrl.lastIndexOf(".")));
//			 FileUtils.copyFile(new File(SystemConfig.ossDir + fileUrl),downFileZip);
//		} catch (Exception e) {
//			e.printStackTrace();
//			return ResultUtil.data(ResultCode.RESULT_ERROR.getCode(), "模板生成异常", null);
//		}
//		try {
//			if (String.valueOf(TemplateType.TYPE_1.getKey()).equals(templet.getTType())) { // 案卷目录
//				QueryWrapper<ArchivesDoc> queryWrapper = new QueryWrapper<ArchivesDoc>();
//				queryWrapper.in("id", id);
//				queryWrapper.last("order by dossierNum + 0");
//				List<ArchivesDoc> selectBatchIds = archivesDocMapper.selectList(queryWrapper);
//				List<Map<String,Object>> maps=new ArrayList<Map<String,Object>>();
//				int i=1;
//				if(selectBatchIds!=null&&selectBatchIds.size()>0) {
//				for (ArchivesDoc archivesDoc : selectBatchIds) {
//					Map<String,Object> params = BeanUtil.beanToMap(archivesDoc);
//					params.put("index", i++);
//					maps.add(params);
//				}
//				}
//				ArchivesDoc doc=new ArchivesDoc();
//				Map<String, Object> model = new HashMap<String, Object>();
//		    	model.put("o", doc);
//		    	model.put("list",maps);
//				JxlsUtils.exportExcel(downFileZip.getAbsolutePath(), new FileOutputStream(path), model);
//			} else if (String.valueOf(TemplateType.TYPE_2.getKey()).equals(templet.getTType())) { // 卷内目录
//				ArchivesDoc selectBatchIds = archivesDocMapper.selectById(id.get(0));
//				List<ArchivesDoc> selectList = null;
//				List<Map<String,Object>> maps=new ArrayList<Map<String,Object>>();
//				if (selectBatchIds != null) {
//					selectBatchIds.setDate();
//					QueryWrapper<ArchivesDoc> queryWrapper = new QueryWrapper<ArchivesDoc>();
//					queryWrapper.eq("dossierId", selectBatchIds.getId());
//					selectList = archivesDocMapper.selectList(queryWrapper);
//					selectList=selectList==null?new ArrayList<ArchivesDoc>():selectList;
//					int i=1;
//					for (ArchivesDoc archivesDoc : selectList) {
//						Map<String,Object> params = BeanUtil.beanToMap(archivesDoc);
//						params.put("index", i++);
//						maps.add(params);
//					}
//				}
//				Map<String, Object> model = new HashMap<String, Object>();
//		    	model.put("o", selectBatchIds);
//		    	model.put("list",maps);
//				JxlsUtils.exportExcel(downFileZip.getAbsolutePath(), new FileOutputStream(path), model);
//			} else if (String.valueOf(TemplateType.TYPE_3.getKey()).equals(templet.getTType())) { // 备考表
//				ArchivesDoc selectBatchIds = archivesDocMapper.selectById(id.get(0));
//				if (selectBatchIds != null) {
//					selectBatchIds.setDate();
//					selectBatchIds = archivesService.builArchivesDocOut(selectBatchIds);
//				}else {
//					selectBatchIds=new ArchivesDoc();
//				}
//
//				ArchivesCount ac = archivesDocMapper.countVolumes(selectBatchIds.getId());
//
//
//				Map<String, Object> model = new HashMap<String, Object>();
//		    	model.put("o", selectBatchIds);
//		    	model.put("ac", ac);
//				JxlsUtils.exportExcel(downFileZip.getAbsolutePath(), new FileOutputStream(path), model);
//			} else if (String.valueOf(TemplateType.TYPE_4.getKey()).equals(templet.getTType())) { // 文书归档文件
//				ArchivesDoc selectBatchIds = archivesDocMapper.selectById(id.get(0));
//				String fondsNum = selectBatchIds.getFondsNum();
//				String classNum = selectBatchIds.getClassNum();
//				String typeNum = selectBatchIds.getTypeNum();
//				String fileType = selectBatchIds.getFileType();
//				String title = selectBatchIds.getTitle();
//				String state = "2";//归档
//				Page<ArchivesDoc> page = new Page<ArchivesDoc>(0, 1000);
//				QueryWrapper<ArchivesDoc> queryWrapper = new QueryWrapper<ArchivesDoc>();
//				if (!StringUtils.isEmpty(fondsNum))
//					queryWrapper.eq("fondsNum", fondsNum);
//				if (!StringUtils.isEmpty(classNum))
//					queryWrapper.eq("classNum", classNum);
//				if (!StringUtils.isEmpty(typeNum))
//					queryWrapper.eq("typeNum", typeNum);
//				if (!StringUtils.isEmpty(fileType))
//					queryWrapper.eq("fileType", fileType);
//				if (!StringUtils.isEmpty(state))
//					queryWrapper.eq("state", state);
//				queryWrapper.eq("isDelete", "0");
//				IPage<ArchivesDoc> info = archivesDocMapper.selectPage(page, queryWrapper);
//
//
//				int i = 1;
//				List<Map<String,Object>> maps=new ArrayList<Map<String,Object>>();
//				for (ArchivesDoc archivesDoc : info.getRecords()) {
//					Map<String,Object> params = BeanUtil.beanToMap(archivesDoc);
//					params.put("index", i++);
//					maps.add(params);
//				}
//
//				Map<String, Object> model = new HashMap<String, Object>();
//		    	model.put("o", selectBatchIds);
//		    	model.put("list", maps);
//				JxlsUtils.exportExcel(downFileZip.getAbsolutePath(), new FileOutputStream(path), model);
//			} else if (String.valueOf(TemplateType.TYPE_5.getKey()).equals(templet.getTType())) { // 案件封面
//				ArchivesDoc selectBatchIds = archivesDocMapper.selectById(id.get(0));
//				if (selectBatchIds != null) {
//					selectBatchIds.setDate();
//				}else {
//					selectBatchIds=new ArchivesDoc();
//				}
//
//				Map<String, Object> model = new HashMap<String, Object>();
//				model.put("o", selectBatchIds);
//				JxlsUtils.exportExcel(downFileZip.getAbsolutePath(), new FileOutputStream(path), model);
//			}else {
//				return ResultUtil.data(ResultCode.RESULT_ERROR.getCode(),"模板类型不存在！！！", null);
//			}
//
//
//			WordUtil.toPdf(path, SystemConfig.tempPath);
//			FileInputStream fileInputStream = new FileInputStream(path);
//			//PutObjectOptions options = new PutObjectOptions(fileInputStream.available(), -1);
//			//options.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
//			String uploadFile = FileCopyUtil.uploadFile("temp", IdWorker.getIdStr() + ".xls", new FileInputStream(path),SystemConfig.ossDir);
//			fileInputStream.close();
//			File pdfFile=new File(basePath + newFile+".pdf");
//			FileInputStream in=new FileInputStream(pdfFile);
//			//PutObjectOptions options1 = new PutObjectOptions(in.available(), -1);
//			//options1.setContentType("application/pdf");
//			String uploadFile1 = FileCopyUtil.uploadFile("temp", IdWorker.getIdStr() + ".pdf", in,
//					SystemConfig.ossDir);
//			List<String> list=new ArrayList<String>();
//			list.add(SystemConfig.showOssFile+uploadFile1);
//			list.add(SystemConfig.showOssFile+uploadFile);
//			in.close();
//			return ResultUtil.data(ResultCode.RESULT_SUCCESS.getCode(), templet.getTType(), list);
//
//		} catch (Exception e) {
//			e.printStackTrace();
//			return ResultUtil.data(ResultCode.RESULT_ERROR.getCode(), "模板生成异常", null);
//		} finally {
//
//		}
//	}

	@ApiOperation(value = "打印文件模板列表", notes = "")
	@GetMapping("/print/{fondsId}/{typeId}/list")
	public Result<List<ArchivesTemplet>> list(@ApiParam("全宗号") @PathVariable("fondsId") String fondsId,
			@PathVariable("typeId") String typeId) {
		QueryWrapper<ArchivesTemplet> queryWrapper = new QueryWrapper<ArchivesTemplet>();
		queryWrapper.eq("fondsId", fondsId);
		queryWrapper.eq("typeId", typeId);
		//queryWrapper.eq("isExport", "1");
		List<ArchivesTemplet> list = archivesTempletMapper.selectList(queryWrapper);

		list.forEach((ArchivesTemplet at)->{
			UreportFile template = ureportFileMapper.selectById(at.getTempletId());

			at.setFileUrl(template.getUrl());
//			at.setFileUrl(SystemConfig.sysHome + template.getUrl());
			at.setModel(template.getModel());
			at.setFileName(template.getName());
		});

		for (int i = 0; i < list.size(); i++) {
			list.get(i).setFileUrl(list.get(i).getFileUrl());
//			list.get(i).setFileUrl(SystemConfig.sysHome + list.get(i).getFileUrl());
		}
		return ResultUtil.data(ResultCode.RESULT_SUCCESS.getCode(), "", list);
	}
}
